<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>CPU 的基本结构 | Lampow燃的博客</title>
    <meta name="generator" content="VuePress 1.9.9">
    <link rel="icon" href="/blog/assets/img/vincentRan.ico">
    <link rel="manifest" href="/blog/manifest.json">
    <script src="/blog/scripts/global.js"></script>
    <script src="/blog/assets/js/autopush-baidu.js"></script>
    <script src="/blog/assets/js/autopush-360.js"></script>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui">
    <meta name="baidu-site-verification" content="gZcjfbZtAw">
    <meta name="google-site-verification" content="cEMNM1qDYFHDq8a4c2uT9n_3yX6kCJ4KolTcLk9DhV4">
    <meta name="360-site-verification" content="8b6f7e9dff6da70522ce0d5ae8ffd923">
    <meta name="author" content="Lampow燃">
    <meta name="keywords" content="vincentRan;Lampow燃;js;Javascript基础;前端;博客">
    <meta name="theme-color" content="#3eaf7c">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="msapplication-TileColor" content="#000000">
    
    <link rel="preload" href="/blog/assets/css/0.styles.b6bf8ae6.css" as="style"><link rel="preload" href="/blog/assets/js/app.7b4540b9.js" as="script"><link rel="preload" href="/blog/assets/js/2.b0da3abb.js" as="script"><link rel="preload" href="/blog/assets/js/94.889bd5e0.js" as="script"><link rel="prefetch" href="/blog/assets/js/10.fad52a34.js"><link rel="prefetch" href="/blog/assets/js/11.d9c57454.js"><link rel="prefetch" href="/blog/assets/js/12.67814a82.js"><link rel="prefetch" href="/blog/assets/js/13.dff6097c.js"><link rel="prefetch" href="/blog/assets/js/14.63aca277.js"><link rel="prefetch" href="/blog/assets/js/15.2996c9e2.js"><link rel="prefetch" href="/blog/assets/js/16.97a52145.js"><link rel="prefetch" href="/blog/assets/js/17.cd17994a.js"><link rel="prefetch" href="/blog/assets/js/18.ac420f2a.js"><link rel="prefetch" href="/blog/assets/js/19.eb6b91bf.js"><link rel="prefetch" href="/blog/assets/js/20.cb363eca.js"><link rel="prefetch" href="/blog/assets/js/21.a4e99c33.js"><link rel="prefetch" href="/blog/assets/js/22.694a6ec1.js"><link rel="prefetch" href="/blog/assets/js/23.55cb3c0d.js"><link rel="prefetch" href="/blog/assets/js/24.0f31eaf1.js"><link rel="prefetch" href="/blog/assets/js/25.2eefb2bd.js"><link rel="prefetch" href="/blog/assets/js/26.9375d9cc.js"><link rel="prefetch" href="/blog/assets/js/27.15116a38.js"><link rel="prefetch" href="/blog/assets/js/28.19eef588.js"><link rel="prefetch" href="/blog/assets/js/29.49bf907e.js"><link rel="prefetch" href="/blog/assets/js/3.d02dbad1.js"><link rel="prefetch" href="/blog/assets/js/30.a3b1e05f.js"><link rel="prefetch" href="/blog/assets/js/31.e816c5a5.js"><link rel="prefetch" href="/blog/assets/js/32.0de6aa66.js"><link rel="prefetch" href="/blog/assets/js/33.0d6966b1.js"><link rel="prefetch" href="/blog/assets/js/34.9b7e8e14.js"><link rel="prefetch" href="/blog/assets/js/35.df38e2a9.js"><link rel="prefetch" href="/blog/assets/js/36.3f437700.js"><link rel="prefetch" href="/blog/assets/js/37.2c1de8b3.js"><link rel="prefetch" href="/blog/assets/js/38.86e11044.js"><link rel="prefetch" href="/blog/assets/js/39.82741cfc.js"><link rel="prefetch" href="/blog/assets/js/4.e142f4c4.js"><link rel="prefetch" href="/blog/assets/js/40.1e6de0bd.js"><link rel="prefetch" href="/blog/assets/js/41.5b9a2f33.js"><link rel="prefetch" href="/blog/assets/js/42.dbe88c0f.js"><link rel="prefetch" href="/blog/assets/js/43.48e12a76.js"><link rel="prefetch" href="/blog/assets/js/44.c5a6663b.js"><link rel="prefetch" href="/blog/assets/js/45.38f327a2.js"><link rel="prefetch" href="/blog/assets/js/46.527a0e03.js"><link rel="prefetch" href="/blog/assets/js/47.b8baaa72.js"><link rel="prefetch" href="/blog/assets/js/48.3447a56d.js"><link rel="prefetch" href="/blog/assets/js/49.cd301a0f.js"><link rel="prefetch" href="/blog/assets/js/5.d43d130b.js"><link rel="prefetch" href="/blog/assets/js/50.644742a2.js"><link rel="prefetch" href="/blog/assets/js/51.ae6a8437.js"><link rel="prefetch" href="/blog/assets/js/52.dfcb8f83.js"><link rel="prefetch" href="/blog/assets/js/53.2a0715a8.js"><link rel="prefetch" href="/blog/assets/js/54.fe7d4a37.js"><link rel="prefetch" href="/blog/assets/js/55.457aa0d9.js"><link rel="prefetch" href="/blog/assets/js/56.dc026f76.js"><link rel="prefetch" href="/blog/assets/js/57.dfa47cb4.js"><link rel="prefetch" href="/blog/assets/js/58.8dfdbcbb.js"><link rel="prefetch" href="/blog/assets/js/59.67f5108d.js"><link rel="prefetch" href="/blog/assets/js/6.e0517a23.js"><link rel="prefetch" href="/blog/assets/js/60.73f12c35.js"><link rel="prefetch" href="/blog/assets/js/61.a6281041.js"><link rel="prefetch" href="/blog/assets/js/62.a1672f34.js"><link rel="prefetch" href="/blog/assets/js/63.65b641c6.js"><link rel="prefetch" href="/blog/assets/js/64.01018dd4.js"><link rel="prefetch" href="/blog/assets/js/65.e7ffb165.js"><link rel="prefetch" href="/blog/assets/js/66.173f5f61.js"><link rel="prefetch" href="/blog/assets/js/67.5f7af08d.js"><link rel="prefetch" href="/blog/assets/js/68.d87b9899.js"><link rel="prefetch" href="/blog/assets/js/69.18f0835e.js"><link rel="prefetch" href="/blog/assets/js/7.da19f9b0.js"><link rel="prefetch" href="/blog/assets/js/70.9090fddd.js"><link rel="prefetch" href="/blog/assets/js/71.dd4e6e2c.js"><link rel="prefetch" href="/blog/assets/js/72.c42d4bf3.js"><link rel="prefetch" href="/blog/assets/js/73.5c5defd2.js"><link rel="prefetch" href="/blog/assets/js/74.b12fdeee.js"><link rel="prefetch" href="/blog/assets/js/75.7f085fdb.js"><link rel="prefetch" href="/blog/assets/js/76.f2d01ffb.js"><link rel="prefetch" href="/blog/assets/js/77.23a7ce10.js"><link rel="prefetch" href="/blog/assets/js/78.3b39d101.js"><link rel="prefetch" href="/blog/assets/js/79.42d64efd.js"><link rel="prefetch" href="/blog/assets/js/8.00fa029c.js"><link rel="prefetch" href="/blog/assets/js/80.64996c95.js"><link rel="prefetch" href="/blog/assets/js/81.a15f0118.js"><link rel="prefetch" href="/blog/assets/js/82.726c1156.js"><link rel="prefetch" href="/blog/assets/js/83.8b3a794d.js"><link rel="prefetch" href="/blog/assets/js/84.7cbe7d64.js"><link rel="prefetch" href="/blog/assets/js/85.3ec16acd.js"><link rel="prefetch" href="/blog/assets/js/86.41b3d3af.js"><link rel="prefetch" href="/blog/assets/js/87.c6e2a7c9.js"><link rel="prefetch" href="/blog/assets/js/88.4d4b145b.js"><link rel="prefetch" href="/blog/assets/js/89.04660517.js"><link rel="prefetch" href="/blog/assets/js/9.12b493d7.js"><link rel="prefetch" href="/blog/assets/js/90.9963ca39.js"><link rel="prefetch" href="/blog/assets/js/91.50f67c60.js"><link rel="prefetch" href="/blog/assets/js/92.f109d0d0.js"><link rel="prefetch" href="/blog/assets/js/93.5664c7c2.js"><link rel="prefetch" href="/blog/assets/js/95.cfcb0fb3.js">
    <link rel="stylesheet" href="/blog/assets/css/0.styles.b6bf8ae6.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/blog/" class="home-link router-link-active"><img src="/blog/assets/img/vincentRan.jpg" alt="Lampow燃的博客" class="logo"> <span class="site-name can-hide">Lampow燃的博客</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="工作台" class="dropdown-title"><span class="title">工作台</span> <span class="arrow down"></span></button> <button type="button" aria-label="工作台" class="mobile-dropdown-title"><span class="title">工作台</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/工作台/工作台.html" class="nav-link">
  工作台
</a></li><li class="dropdown-item"><h4>
          未来探索
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/未来探索/营销公司.html" class="nav-link">
  营销
</a></li><li class="dropdown-subitem"><a href="/blog/article/未来探索/野外单兵防护.html" class="nav-link">
  野外单兵防护
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="计算机原理" class="dropdown-title"><span class="title">计算机原理</span> <span class="arrow down"></span></button> <button type="button" aria-label="计算机原理" class="mobile-dropdown-title"><span class="title">计算机原理</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html" class="nav-link">
  CPU结构以及简单运行原理
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/计算机原理/进程和线程.html" class="nav-link">
  进程和线程
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Javascript 基础" class="dropdown-title"><span class="title">Javascript 基础</span> <span class="arrow down"></span></button> <button type="button" aria-label="Javascript 基础" class="mobile-dropdown-title"><span class="title">Javascript 基础</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/数据类型.html" class="nav-link">
  数据类型
</a></li><li class="dropdown-item"><h4>
          关键字
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/通用关键字.html" class="nav-link">
  通用关键字
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/async &amp; await.html" class="nav-link">
  async &amp; await
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/new.html" class="nav-link">
  new
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/yield.html" class="nav-link">
  yield
</a></li></ul></li><li class="dropdown-item"><h4>
          常用内置对象
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Object.html" class="nav-link">
  Object
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Function.html" class="nav-link">
  Function
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/GeneratorFunction.html" class="nav-link">
  GeneratorFunction
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Promise.html" class="nav-link">
  Promise
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Reflect.html" class="nav-link">
  Reflect
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Array.html" class="nav-link">
  Array
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Set.html" class="nav-link">
  Set
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Proxy.html" class="nav-link">
  Proxy
</a></li></ul></li><li class="dropdown-item"><h4>
          构造函数-原型-原型链
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/构造函数.html" class="nav-link">
  构造函数
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/原型.html" class="nav-link">
  原型
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/原型链.html" class="nav-link">
  原型链
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/箭头函数.html" class="nav-link">
  箭头函数
</a></li></ul></li><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/1-4、数组操作.html" class="nav-link">
  数组操作
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/深浅拷贝.html" class="nav-link">
  引用类型之深拷贝浅拷贝
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/1-6、知识体系.html" class="nav-link">
  知识体系
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Javascript 进阶" class="dropdown-title"><span class="title">Javascript 进阶</span> <span class="arrow down"></span></button> <button type="button" aria-label="Javascript 进阶" class="mobile-dropdown-title"><span class="title">Javascript 进阶</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/js-upgrade/模块化/模块化.html" class="nav-link">
  模块化
</a></li><li class="dropdown-item"><h4>
          性能优化
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/性能优化/避免内存泄漏.html" class="nav-link">
  避免内存泄漏
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/性能优化/v8垃圾回收机制.html" class="nav-link">
  v8垃圾回收机制
</a></li></ul></li><li class="dropdown-item"><h4>
          编程范式
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程范式/编程范式.html" class="nav-link">
  编程范式
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程范式/面向对象_封装.html" class="nav-link">
  面向对象编程
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程范式/函数式编程.html" class="nav-link">
  函数式编程
</a></li></ul></li><li class="dropdown-item"><h4>
          编程原则
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程原则/编程原则.html" class="nav-link">
  编程原则
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程原则/Immutable原则.html" class="nav-link">
  Immutable原则
</a></li></ul></li><li class="dropdown-item"><h4>
          设计模式
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/设计模式/什么是设计模式.html" class="nav-link">
  什么是设计模式
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/设计模式/访问者模式.html" class="nav-link">
  访问者模式
</a></li></ul></li><li class="dropdown-item"><h4>
          常见算法
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/算法/贪心算法.html" class="nav-link">
  贪心算法
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/算法/LRU（least recently used）.html" class="nav-link">
  LRU（least recently used）
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="框架" class="dropdown-title"><span class="title">框架</span> <span class="arrow down"></span></button> <button type="button" aria-label="框架" class="mobile-dropdown-title"><span class="title">框架</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          NestJS
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/NestJS/初始NestJS.html" class="nav-link">
  初始NestJS
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/NestJS/数据库.html" class="nav-link">
  数据库
</a></li></ul></li><li class="dropdown-item"><h4>
          typescript
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/初识TypeScript.html" class="nav-link">
  初识TypeScript
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/基本类型.html" class="nav-link">
  基本类型
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/进阶类型.html" class="nav-link">
  进阶类型
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/最佳实践.html" class="nav-link">
  最佳实践
</a></li></ul></li><li class="dropdown-item"><h4>
          React
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/react/基础用法.html" class="nav-link">
  基础用法
</a></li></ul></li><li class="dropdown-item"><h4>
          Vue
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/vue/生命周期&amp;执行过程.html" class="nav-link">
  生命周期&amp;执行过程
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/组件间通信.html" class="nav-link">
  组件间通信
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/自定义指令.html" class="nav-link">
  自定义指令
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/手撸ViewModel.html" class="nav-link">
  手撸ViewModel
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/源码解析/核心源码模块.html" class="nav-link">
  源码解析
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="前端工程化" class="dropdown-title"><span class="title">前端工程化</span> <span class="arrow down"></span></button> <button type="button" aria-label="前端工程化" class="mobile-dropdown-title"><span class="title">前端工程化</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          持续集成与交付
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/前端工程化/CI&amp;CD/CI&amp;CD.html" class="nav-link">
  持续集成与交付
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/CI&amp;CD/编译打包/编译原理.html" class="nav-link">
  编译打包
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/CI&amp;CD/自动化测试/自动化测试.html" class="nav-link">
  自动化测试
</a></li></ul></li><li class="dropdown-item"><h4>
          脚手架开发
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/前端工程化/脚手架开发/npm原生/npm脚手架开发.html" class="nav-link">
  npm原生
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/脚手架开发/lerna库/快速上手.html" class="nav-link">
  lerna库
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/脚手架开发/commander/commander.html" class="nav-link">
  commander管理命令
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="工具代码" class="dropdown-title"><span class="title">工具代码</span> <span class="arrow down"></span></button> <button type="button" aria-label="工具代码" class="mobile-dropdown-title"><span class="title">工具代码</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/工具代码/正则.html" class="nav-link">
  正则
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/工具代码/浏览器扩展.html" class="nav-link">
  浏览器扩展
</a></li><li class="dropdown-item"><h4>
          轮子系列
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/订阅发布模式.html" class="nav-link">
  订阅发布模式
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/深拷贝.html" class="nav-link">
  深拷贝
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/Promise.html" class="nav-link">
  22行简洁的Promise
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/健壮的Promise.html" class="nav-link">
  健壮的Promise
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/节流and防抖.html" class="nav-link">
  节流and防抖
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/链表.html" class="nav-link">
  链表
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/Immer核心.html" class="nav-link">
  Immer核心
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/手写new.html" class="nav-link">
  手写new
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="web3D" class="dropdown-title"><span class="title">web3D</span> <span class="arrow down"></span></button> <button type="button" aria-label="web3D" class="mobile-dropdown-title"><span class="title">web3D</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/plan.html" class="nav-link">
  学习计划
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/WebGL2_Attr.html" class="nav-link">
  WebGL2 属性
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/WebGL2_API.html" class="nav-link">
  WebGL2 API
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/WebGL2_Interface.html" class="nav-link">
  WebGL2 接口
</a></li></ul></div></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="工作台" class="dropdown-title"><span class="title">工作台</span> <span class="arrow down"></span></button> <button type="button" aria-label="工作台" class="mobile-dropdown-title"><span class="title">工作台</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/工作台/工作台.html" class="nav-link">
  工作台
</a></li><li class="dropdown-item"><h4>
          未来探索
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/未来探索/营销公司.html" class="nav-link">
  营销
</a></li><li class="dropdown-subitem"><a href="/blog/article/未来探索/野外单兵防护.html" class="nav-link">
  野外单兵防护
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="计算机原理" class="dropdown-title"><span class="title">计算机原理</span> <span class="arrow down"></span></button> <button type="button" aria-label="计算机原理" class="mobile-dropdown-title"><span class="title">计算机原理</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html" class="nav-link">
  CPU结构以及简单运行原理
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/计算机原理/进程和线程.html" class="nav-link">
  进程和线程
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Javascript 基础" class="dropdown-title"><span class="title">Javascript 基础</span> <span class="arrow down"></span></button> <button type="button" aria-label="Javascript 基础" class="mobile-dropdown-title"><span class="title">Javascript 基础</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/数据类型.html" class="nav-link">
  数据类型
</a></li><li class="dropdown-item"><h4>
          关键字
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/通用关键字.html" class="nav-link">
  通用关键字
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/async &amp; await.html" class="nav-link">
  async &amp; await
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/new.html" class="nav-link">
  new
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/关键字/yield.html" class="nav-link">
  yield
</a></li></ul></li><li class="dropdown-item"><h4>
          常用内置对象
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Object.html" class="nav-link">
  Object
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Function.html" class="nav-link">
  Function
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/GeneratorFunction.html" class="nav-link">
  GeneratorFunction
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Promise.html" class="nav-link">
  Promise
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Reflect.html" class="nav-link">
  Reflect
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Array.html" class="nav-link">
  Array
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Set.html" class="nav-link">
  Set
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/内置对象/Proxy.html" class="nav-link">
  Proxy
</a></li></ul></li><li class="dropdown-item"><h4>
          构造函数-原型-原型链
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/构造函数.html" class="nav-link">
  构造函数
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/原型.html" class="nav-link">
  原型
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/原型链.html" class="nav-link">
  原型链
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-basic/构造函数-原型-原型链/箭头函数.html" class="nav-link">
  箭头函数
</a></li></ul></li><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/1-4、数组操作.html" class="nav-link">
  数组操作
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/深浅拷贝.html" class="nav-link">
  引用类型之深拷贝浅拷贝
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/js-basic/1-6、知识体系.html" class="nav-link">
  知识体系
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Javascript 进阶" class="dropdown-title"><span class="title">Javascript 进阶</span> <span class="arrow down"></span></button> <button type="button" aria-label="Javascript 进阶" class="mobile-dropdown-title"><span class="title">Javascript 进阶</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/js-upgrade/模块化/模块化.html" class="nav-link">
  模块化
</a></li><li class="dropdown-item"><h4>
          性能优化
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/性能优化/避免内存泄漏.html" class="nav-link">
  避免内存泄漏
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/性能优化/v8垃圾回收机制.html" class="nav-link">
  v8垃圾回收机制
</a></li></ul></li><li class="dropdown-item"><h4>
          编程范式
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程范式/编程范式.html" class="nav-link">
  编程范式
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程范式/面向对象_封装.html" class="nav-link">
  面向对象编程
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程范式/函数式编程.html" class="nav-link">
  函数式编程
</a></li></ul></li><li class="dropdown-item"><h4>
          编程原则
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程原则/编程原则.html" class="nav-link">
  编程原则
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/编程原则/Immutable原则.html" class="nav-link">
  Immutable原则
</a></li></ul></li><li class="dropdown-item"><h4>
          设计模式
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/设计模式/什么是设计模式.html" class="nav-link">
  什么是设计模式
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/设计模式/访问者模式.html" class="nav-link">
  访问者模式
</a></li></ul></li><li class="dropdown-item"><h4>
          常见算法
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/算法/贪心算法.html" class="nav-link">
  贪心算法
</a></li><li class="dropdown-subitem"><a href="/blog/article/js-upgrade/算法/LRU（least recently used）.html" class="nav-link">
  LRU（least recently used）
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="框架" class="dropdown-title"><span class="title">框架</span> <span class="arrow down"></span></button> <button type="button" aria-label="框架" class="mobile-dropdown-title"><span class="title">框架</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          NestJS
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/NestJS/初始NestJS.html" class="nav-link">
  初始NestJS
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/NestJS/数据库.html" class="nav-link">
  数据库
</a></li></ul></li><li class="dropdown-item"><h4>
          typescript
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/初识TypeScript.html" class="nav-link">
  初识TypeScript
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/基本类型.html" class="nav-link">
  基本类型
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/进阶类型.html" class="nav-link">
  进阶类型
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/typescript/最佳实践.html" class="nav-link">
  最佳实践
</a></li></ul></li><li class="dropdown-item"><h4>
          React
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/react/基础用法.html" class="nav-link">
  基础用法
</a></li></ul></li><li class="dropdown-item"><h4>
          Vue
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/框架/vue/生命周期&amp;执行过程.html" class="nav-link">
  生命周期&amp;执行过程
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/组件间通信.html" class="nav-link">
  组件间通信
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/自定义指令.html" class="nav-link">
  自定义指令
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/手撸ViewModel.html" class="nav-link">
  手撸ViewModel
</a></li><li class="dropdown-subitem"><a href="/blog/article/框架/vue/源码解析/核心源码模块.html" class="nav-link">
  源码解析
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="前端工程化" class="dropdown-title"><span class="title">前端工程化</span> <span class="arrow down"></span></button> <button type="button" aria-label="前端工程化" class="mobile-dropdown-title"><span class="title">前端工程化</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          持续集成与交付
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/前端工程化/CI&amp;CD/CI&amp;CD.html" class="nav-link">
  持续集成与交付
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/CI&amp;CD/编译打包/编译原理.html" class="nav-link">
  编译打包
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/CI&amp;CD/自动化测试/自动化测试.html" class="nav-link">
  自动化测试
</a></li></ul></li><li class="dropdown-item"><h4>
          脚手架开发
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/前端工程化/脚手架开发/npm原生/npm脚手架开发.html" class="nav-link">
  npm原生
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/脚手架开发/lerna库/快速上手.html" class="nav-link">
  lerna库
</a></li><li class="dropdown-subitem"><a href="/blog/article/前端工程化/脚手架开发/commander/commander.html" class="nav-link">
  commander管理命令
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="工具代码" class="dropdown-title"><span class="title">工具代码</span> <span class="arrow down"></span></button> <button type="button" aria-label="工具代码" class="mobile-dropdown-title"><span class="title">工具代码</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/工具代码/正则.html" class="nav-link">
  正则
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/工具代码/浏览器扩展.html" class="nav-link">
  浏览器扩展
</a></li><li class="dropdown-item"><h4>
          轮子系列
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/订阅发布模式.html" class="nav-link">
  订阅发布模式
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/深拷贝.html" class="nav-link">
  深拷贝
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/Promise.html" class="nav-link">
  22行简洁的Promise
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/健壮的Promise.html" class="nav-link">
  健壮的Promise
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/节流and防抖.html" class="nav-link">
  节流and防抖
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/链表.html" class="nav-link">
  链表
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/Immer核心.html" class="nav-link">
  Immer核心
</a></li><li class="dropdown-subitem"><a href="/blog/article/工具代码/轮子系列/手写new.html" class="nav-link">
  手写new
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="web3D" class="dropdown-title"><span class="title">web3D</span> <span class="arrow down"></span></button> <button type="button" aria-label="web3D" class="mobile-dropdown-title"><span class="title">web3D</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/plan.html" class="nav-link">
  学习计划
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/WebGL2_Attr.html" class="nav-link">
  WebGL2 属性
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/WebGL2_API.html" class="nav-link">
  WebGL2 API
</a></li><li class="dropdown-item"><!----> <a href="/blog/article/web3D/webgl/WebGL2_Interface.html" class="nav-link">
  WebGL2 接口
</a></li></ul></div></div> <!----></nav>  <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>工作台</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>计算机原理</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html" class="active sidebar-link">CPU结构以及简单运行原理</a></li><li><a href="/blog/article/计算机原理/进程和线程.html" class="sidebar-link">进程和线程</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Javascript 基础</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Javascript 进阶</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>框架</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>前端工程化</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>工具代码</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>web3D</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h2 id="cpu-的基本结构"><a href="#cpu-的基本结构" class="header-anchor">#</a> CPU 的基本结构</h2> <div class="custom-block tip"><p class="custom-block-title">主要组成部分 CU、AU、存储</p> <ol><li><code>指令寄存器</code> ：通常是计算机中的一种<code>特殊寄存器</code>。它用于<code>暂时存储</code>当前正在执行的指令的<code>内存地址</code>。用于 CPU 顺序连续地执行指令序列，从而完成程序的运行</li> <li><code>指令译码器</code> ：用于解析从<code>指令寄存器中读取的计算机指令</code>。指令译码器的主要任务是将指令的<code>操作码</code>（opcode）解释为相应的<code>控制信号和操作数</code>，以便 CPU 能够<code>正确执行指令</code>。</li> <li><code>控制单元</code> ：既然指令可以存入 CPU，而且有相应指令来完成运算前的准备工作，背后自然有一个扮演推动作用的角色——它便是负责整个处理过程的操作控制器。根据来自译码单元的指令，它会生成控制信号，告诉运算逻辑单元（ALU）和寄存器如何运算、对什么进行运算以及对结果进行怎样的处理。</li> <li><code>寄存器</code> ：它对于 CPU 来说非常的重要，除了存放程序的部分指令，它还负责存储指针跳转信息以及循环操作命令，是运算逻辑单元（ALU）为完成控制单元请求的任务所使用的数据的小型存储区域，其数据来源可以是高速缓存、内存、控制单元中的任何一个。</li> <li><code>逻辑运算单元（ALU）</code> ：它是 CPU 芯片的智能部件，能够执行加、减、乘、除等各种命令。此外，它还知道如何读取逻辑命令，如或、与、非。来自控制单元的讯息将告诉运算逻辑单元应该做些什么，然后运算单元会从寄存器中间断或连续提取数据，完成最终的任务。</li> <li><code>预取单元</code> ：PU 效能发挥对其依赖非常明显，预取命中率的高低直接关系到 CPU 核心利用率的高低，进而带来指令执行速度上的不同。根据命令或要执行任务所提出的要求，何时时候，预取单元都有可能从指令高速缓存或计算机内存中获取数据和指令。当指令到达时，预取单元最重要的任务就是确保所有指令均排列正确，然后发送给译码单元。</li> <li><code>数据高速缓存</code> ：存储来自译码单元专门标记的数据，以备逻辑运算单元使用，同时还准备了分配到计算机不同部分的最终结果。</li></ol></div> <div class="custom-block tip"><p class="custom-block-title">一段 js 片段，在 cpu 中的模拟执行过程：</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">let</span> a <span class="token operator">=</span> <span class="token number">5</span>
<span class="token keyword">let</span> b <span class="token operator">=</span> <span class="token number">10</span>
<span class="token keyword">let</span> result <span class="token operator">=</span> a <span class="token operator">+</span> b
</code></pre></div><ol><li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html#_1、指令寄存器-instruction-register">指令寄存器（Instruction Register）</a> ：获取第一条指令，将<code>let a = 5;</code>作为机器指令存储在<code>指令寄存器</code>中。</li> <li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html#_2、指令译码器-instruction-decoder">指令译码器（Instruction Decoder）</a>：<code>解码指令</code>，将机器指令解码成 CPU 内部能够理解的<code>控制信号</code>。</li> <li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html#_3、控制单元-control-unit-cpu-核心部件">控制单元（Control Unit）</a>： <code>发送信号</code>，控制单元根据解码后的控制信号，将写入寄存器的指令<code>发送给寄存器</code>组件。</li> <li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html#_4、寄存器-registers">寄存器（Registers）</a>：<code>存储数据</code>，将<code>5</code>存储在寄存器<code>a</code>中。</li> <li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html#_5、预取单元-prefetch-unit">预取单元（Prefetch Unit）</a>：<code>预取指令</code>，预取单元从<code>主内存</code>中预先获取可能需要的指令，并存储在<code>指令高速缓存</code>中。</li></ol> <ul><li></li></ul> <ol><li>指令寄存器（Instruction Register）：获取下一条指令，将<code>let b = 10;</code>作为机器指令存储在指令寄存器中。</li> <li>指令译码器（Instruction Decoder）：<code>解码指令</code>，将机器指令解码成 CPU 内部能够理解的<code>控制信号</code>。</li> <li>控制单元（Control Unit）：<code>发送信号</code>，控制单元根据解码后的控制信号，将写入寄存器的指令<code>发送给寄存器</code>组件。</li> <li>寄存器（Registers）：存储数据，将<code>10</code>存储在寄存器<code>b</code>中。</li> <li>预取单元（Prefetch Unit）：<code>预取指令</code>，预取单元从<code>主内存</code>中预先获取可能需要的指令，并存储在<code>指令高速缓存</code>中。</li></ol> <ul><li></li></ul> <ol><li>指令寄存器（Instruction Register）：获取下一条指令，将<code>let result = a + b;</code>作为机器指令存储在<code>指令寄存器</code>中。</li> <li>指令译码器（Instruction Decoder）：<code>解码指令</code>，将机器指令解码成 CPU 内部能够理解的<code>控制信号</code>。</li> <li>控制单元（Control Unit）：<code>发送信号</code>，控制单元根据解码后的控制信号，将运算指令发送给<code>算术逻辑单元（ALU）</code>和<code>寄存器</code>组件。</li> <li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html#_6、数据高速缓存-data-cache">数据高速缓存（Data Cache）</a>：<code>获取数据</code>，从寄存器<code>a</code>和寄存器<code>b</code>中读取值<code>5</code>和<code>10</code>，以及指令高速缓存中读取指令<code>let a = 5;</code>和<code>let b = 10;</code>。</li> <li><a href="/blog/article/计算机原理/CPU结构以及简单运行原理.html#_7、算术逻辑单元-alu-cpu-核心部件">算术逻辑单元（ALU）</a>：<code>执行加法运算</code>，将寄存器<code>a</code>和寄存器<code>b</code>的值相加得到<code>15</code>。</li> <li>寄存器（Registers）：<code>存储结果</code>，将<code>15</code>存储在寄存器<code>result</code>中。</li></ol></div> <h2 id="_1、指令寄存器-instruction-register"><a href="#_1、指令寄存器-instruction-register" class="header-anchor">#</a> 1、指令寄存器（Instruction Register）</h2> <div class="custom-block tip"><p class="custom-block-title">指令寄存器（Instruction Register）</p> <p>通常是计算机中的一种<code>特殊寄存器</code>。它用于<code>暂时存储</code>当前正在执行的指令的<code>内存地址</code>。在中央处理单元（CPU）的指令执行过程中，指令寄存器是一个重要的组成部分。</p> <p>当 CPU 从主存储器（RAM）中读取指令时，这些指令会被加载到指令寄存器中。指令寄存器的大小通常与计算机的<code>指令字长</code>相匹配，以便能够容纳一条完整的指令。</p> <p>在执行阶段，CPU 会从指令寄存器中读取当前的指令，并根据指令的<code>操作码</code>（opcode）执行相应的操作。操作码指示了执行的具体<code>指令类型</code>，例如加法、减法、乘法、条件分支等。指令寄存器的内容会<code>被解析并传递</code>到<code>指令译码器</code>，进一步分析指令的操作码和操作数，以便正确执行指令。</p> <p>执行完一条指令后，指令寄存器会<code>更新为下一条</code>将要执行的指令的地址，通常是当前指令地址加上指令的长度。这样，CPU 就能够按顺序连续地执行指令序列，从而完成程序的运行。</p></div> <h2 id="_2、指令译码器-instruction-decoder"><a href="#_2、指令译码器-instruction-decoder" class="header-anchor">#</a> 2、指令译码器（Instruction Decoder）</h2> <div class="custom-block tip"><p class="custom-block-title">指令译码器（Instruction Decoder）</p> <p>是计算机中的一个重要组件，用于解析从<code>指令寄存器中读取的计算机指令</code>。指令译码器的主要任务是将指令的<code>操作码</code>（opcode）解释为相应的<code>控制信号和操作数</code>，以便 CPU 能够<code>正确执行指令</code>。</p> <p>当 CPU 从指令寄存器中读取一条指令时，指令译码器会对指令进行解析，识别出指令的操作码字段。<code>操作码</code>是指令中用来<code>标识执行何种操作</code>的一部分。例如，对于一个<code>加法指令</code>，操作码将指示 CPU 执行加法操作。</p> <p>一旦指令译码器识别出操作码，它将会产生相应的控制信号，用于激活 CPU 内部的不同功能部件，以执行指令所需的操作。这些<code>控制信号可能包括</code>：</p> <ol><li><code>数据通路控制信号</code>：用于控制数据的<code>流动</code>和<code>操作</code>，例如将数据<code>加载</code>到<code>寄存器</code>、进行<code>算术逻辑运算</code>等。</li> <li><code>存储器控制信号</code>：用于与 RAM 进行<code>数据读写交互</code>，例如从<code>内存中加载</code>数据、将结果<code>存储回内存</code>等。</li> <li><code>状态更新信号</code>：用于更新 CPU 内部的<code>状态标志</code>，例如<code>进位标志</code>、<code>零标志</code>等，以便于后续的<code>指令判断</code>和<code>条件分支</code>。</li> <li><code>分支控制信号</code>：用于处理<code>条件分支</code>指令，决定是否<code>跳转</code>到指定的<code>程序地址</code>执行。</li></ol> <p>指令译码器的设计和实现与计算机的体系结构密切相关。不同的体系结构可能有不同的指令格式和操作码，因此指令译码器的逻辑也会有所差异。在现代 CPU 中，指令译码器通常是<code>高度优化</code>的<code>硬件部件</code>，采用复杂的<code>逻辑电路</code>和<code>流水线技术</code>，以实现<code>高效</code>的<code>指令解析</code>和<code>执行</code>。</p></div> <h2 id="_3、控制单元-control-unit-cpu-核心部件"><a href="#_3、控制单元-control-unit-cpu-核心部件" class="header-anchor">#</a> 3、控制单元（Control Unit） CPU 核心部件</h2> <div class="custom-block tip"><p class="custom-block-title">控制单元（Control Unit）</p> <p>是计算机中的一个重要组成部分，是中央处理单元（CPU）的<code>核心部分</code>之一。它负责<code>协调</code>和<code>控制</code> CPU 内部的各个部件，以执行指令并完成计算机的各种操作。</p> <p>控制单元主要子部分包括：</p> <ol><li><code>指令寄存器</code>（Instruction Register，简称 IR）</li> <li><code>程序计数器</code>（Program Counter，简称 PC）：也称为指令地址寄存器（Instruction Address Register，简称 IAR），用于存储下一条将要执行的指令的内存地址。</li> <li><code>指令译码器</code>（Instruction Decoder）</li> <li><code>控制信号发生器</code>（Control Signal Generator）：根据指令译码器的输出，产生相应的控制信号，用于控制 CPU 内部的各个部件的动作。</li> <li><code>时序单元</code>（Timing Unit）：负责生成<code>时钟信号</code>，以确保指令和数据在适当的时间进行读取和写入。</li> <li><code>中断控制器</code>（Interrupt Controller）：负责处理来自<code>外部设备的中断信号</code>，以中断当前正在执行的程序，并保存相关信息，以便稍后继续执行。</li> <li><code>分支逻辑单元</code>（Branch Logic Unit）：负责处理<code>分支控制信号</code>，用于处理条件分支指令，根据条件判断是否跳转到指定的程序地址。</li> <li><code>状态寄存器</code>（Flag Register）：负责处理<code>状态更新信号</code>，用于存储标志位，记录程序运行过程中的状态信息，如溢出、零标志等。</li></ol> <p>控制单元的设计和实现对于 CPU 的性能和效率至关重要。现代计算机中的控制单元通常采用高度优化的硬件电路和流水线技术，以实现高效的指令解析和执行。同时，控制单元与其他部件的紧密配合，使得计算机能够高效地执行各种复杂的程序和任务。</p></div> <h2 id="_4、寄存器-registers"><a href="#_4、寄存器-registers" class="header-anchor">#</a> 4、寄存器（Registers）</h2> <div class="custom-block tip"><p class="custom-block-title">寄存器（Registers）</p> <p>寄存器是计算机内部的一种<code>高速存储器</code>，用于<code>临时</code>存储数据、地址和控制信息。寄存器位于 CPU 内部，它们是 CPU 的组成部分之一。寄存器的访问<code>速度非常快</code>，远远高于主存储器（RAM），因此寄存器常被用于存储<code>频繁使用</code>的<code>数据</code>和<code>控制信息</code>，以加快计算机的执行速度。</p> <p>寄存器的<code>容量</code>通常<code>较小</code>，位于几十个字节到几百个字节之间。寄存器的快速访问速度使得它们成为 CPU 内部数据传输和处理的关键部件。计算机的体系结构和 CPU 的设计决定了寄存器的数量、类型和用途。寄存器在计算机的运算过程中扮演着重要的角色，<code>直接影响</code>计算机的<code>性能</code>和<code>执行效率</code>。</p> <p>计算机中的寄存器可以根据其功能和用途分为多种类型，其中一些常见的寄存器包括：</p> <ol><li><code>数据寄存器</code>：用于存储临时数据，例如算术运算的操作数或运算结果。CPU 通常具有多个数据寄存器，如通用寄存器（General-Purpose Registers）和浮点寄存器（Floating-Point Registers）等。</li> <li><code>地址寄存器</code>：用于存储内存地址，例如指令的地址或数据的地址。程序计数器（Program Counter，PC）就是一个重要的地址寄存器，它存储当前正在执行的指令地址。</li> <li><code>指令寄存器</code>：用于存储当前正在执行的指令。指令寄存器是控制单元中的一个重要组件，用于暂时存储从主存储器中读取的指令，以便执行。</li> <li><code>累加器</code>：特殊的数据寄存器，通常用于存储算术运算的结果，并参与多数算术操作。</li> <li><code>状态寄存器</code>（标志寄存器）：用于存储特定的状态标志位，例如零标志、进位标志等。这些标志位记录了上一条指令的执行结果，供后续指令进行条件判断。</li> <li><code>堆栈指针寄存器</code>：用于存储堆栈（栈）的顶部地址，支持程序调用和返回的过程。</li></ol></div> <h2 id="_5、预取单元-prefetch-unit"><a href="#_5、预取单元-prefetch-unit" class="header-anchor">#</a> 5、预取单元（Prefetch Unit）</h2> <div class="custom-block tip"><p class="custom-block-title">预取单元（Prefetch Unit）</p> <p>预取单元是计算机中的一个部件，它负责从<code>主存储器</code>（RAM）中<code>预取</code>（Prefetch）<code>指令</code>和<code>数据</code>，并将其<code>暂时存储</code>在 CPU 内部的<code>缓存</code>中，以<code>提高</code>指令和数据的<code>访问速度</code>。</p> <p>预取单元的主要功能包括：</p> <ol><li><code>指令预取</code>：预取单元根据程序计数器（Program Counter，PC）中的地址，从主存储器中读取下一条将要执行的指令，并将其暂时存储在指令缓存（Instruction Cache）中。这样，当 CPU 需要执行指令时，预取单元可以快速地将指令提供给 CPU，减少因指令访问延迟而导致的等待时间。</li> <li><code>数据预取</code>：类似于指令预取，预取单元还可以预取即将需要的数据并将其存储在数据缓存（Data Cache）中。这样，在 CPU 需要读取数据时，数据已经在缓存中可用，而不需要再次从主存储器中读取，从而加快数据访问速度。</li> <li><code>数据预取策略</code>：预取单元通常采用一定的策略来决定预取的指令和数据。例如，可以使用连续预取策略，预取与当前执行的指令或数据连续存储在主存储器中的指令或数据块。还可以使用局部性预取策略，根据程序执行的局部性原理，预取与当前执行指令或数据相关联的指令或数据。</li></ol> <p>预取单元在现代计算机中起着重要的作用，特别是在多级缓存架构中。通过预取指令和数据，预取单元可以减少因主存储器访问延迟而导致的性能瓶颈，提高计算机的执行效率。然而，预取单元的性能和效果也受到许多因素的影响，例如缓存容量、预取策略、数据局部性等。因此，在计算机设计中，预取单元的优化是一个重要的课题。</p></div> <h2 id="_6、数据高速缓存-data-cache"><a href="#_6、数据高速缓存-data-cache" class="header-anchor">#</a> 6、数据高速缓存（Data Cache）</h2> <div class="custom-block tip"><p class="custom-block-title">数据高速缓存（Data Cache）</p> <p>数据高速缓存是计算机中的一种<code>高速存储器</code>，用于暂时存储近期被 CPU <code>频繁访问</code>的数据。它位于 CPU 内部，并且比主存储器（RAM）更接近 CPU 核心，因此具有更快的访问速度。数据高速缓存通常是 CPU 的<code>一级缓存</code>（L1 Cache）或<code>二级缓存</code>（L2 Cache）。</p> <p>数据高速缓存的主要目的是提高 CPU 对数据的访问速度，因为访问高速缓存的时间比访问主存储器要快得多。当 CPU 需要访问特定的数据时，<code>首先</code>会检查高速缓存，如果数据在缓存中存在<code>（命中）</code>，CPU 就可以直接从<code>高速缓存</code>中<code>读取数据</code>，从而避免了从<code>主存储器</code>中读取数据的<code>延迟</code>。如果数据不在高速缓存中（<code>未命中</code>），CPU 就会从<code>主存储器中读取</code>数据，并将数据加载到高速缓存中，以备将来的访问。</p> <p>数据高速缓存的设计和优化是一个复杂的任务，涉及到缓存大小、缓存块大小、缓存关联度和替换策略等方面的决策。常见的缓存关联度包括直接映射、组相联映射和全相联映射。不同的关联度和替换策略对于缓存性能和效率有不同的影响。因此，现代 CPU 通常会采用复杂的缓存控制逻辑来优化数据高速缓存的性能。</p> <p>高速缓存对于计算机性能的提升非常重要，特别是对于频繁访问的数据和代码。通过使用数据高速缓存，CPU 能够更快地访问数据，减少访问主存储器的次数，从而提高计算机的整体执行效率。</p></div> <h2 id="_7、算术逻辑单元-alu-cpu-核心部件"><a href="#_7、算术逻辑单元-alu-cpu-核心部件" class="header-anchor">#</a> 7、算术逻辑单元（ALU） CPU 核心部件</h2> <div class="custom-block tip"><p class="custom-block-title">算术逻辑单元（ALU）</p> <p>算术逻辑单元是计算机 CPU 中的一个<code>核心组件</code>，负责执行<code>算术运算</code>和<code>逻辑运算</code>。ALU 接收来自<code>寄存器</code>和<code>主存储器</code>的数据，并根据控制信号执行各种算术和逻辑操作。</p> <p>ALU 通常支持多种算术运算，包括<code>加、减、乘、除</code>等。对于加法和减法，ALU 可以执行多位二进制数的加减运算。对于<code>乘法和除法</code>，ALU 可能<code>需要</code>多个<code>时钟周期</code>或通过多个<code>指令</code>来完成<code>较复杂</code>的<code>运算</code>。</p> <p>除了算术运算，ALU 还支持逻辑运算，例如<code>与、或、非、异或</code>等。逻辑运算通常用于处理二进制位的状态，例如逻辑<code>与运算</code>可以用于<code>位掩码</code>操作，逻辑<code>或运算</code>可以用于将不同的<code>标志位合并</code>等。</p> <p>ALU 的设计和功能取决于计算机的体系结构和指令集。现代 CPU 中的 ALU 通常是高度优化的硬件部件，采用并行处理和流水线技术，以实现高效的算术和逻辑运算。ALU 的<code>性能</code>和<code>宽度</code>（即能够处理的<code>数据位数</code>）<code>直接影响</code>计算机的<code>运算速度</code>和<code>处理能力</code>。</p> <p>在计算机执行指令时，控制单元将从指令中解析出的操作码发送给 ALU，指示它执行相应的操作。ALU 根据控制信号和输入数据进行计算，并将结果返回给寄存器或主存储器。通过 ALU 的执行，CPU 能够完成各种复杂的算术和逻辑运算，从而实现计算机的功能和计算任务。</p></div></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">更新时间:</span> <span class="time">2023年9月4日星期一上午10点30分</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
      ←
      <a href="/blog/article/未来探索/野外单兵防护.html" class="prev">
        野外单兵防护
      </a></span> <span class="next"><a href="/blog/article/计算机原理/进程和线程.html">
        进程和线程
      </a>
      →
    </span></p></div> </main></div><div class="global-ui"></div></div>
    <script src="/blog/assets/js/app.7b4540b9.js" defer></script><script src="/blog/assets/js/2.b0da3abb.js" defer></script><script src="/blog/assets/js/94.889bd5e0.js" defer></script>
  </body>
</html>
